#include "BonusCambioMultiplicador.h"
#include "Pacman.h"
#include "Juego.h"

BonusCambioMultiplicador::BonusCambioMultiplicador(Punto* unPunto,unsigned int unRadio, bool vivo, float unMultiplicador) : BonusModel(unPunto,unRadio,vivo){
    this->multiplicador = unMultiplicador;
}
        
void BonusCambioMultiplicador::colisionarConPacman(ObjetoVivo* unObjetoVivo){
    Pacman* pacman = (Pacman*)unObjetoVivo;

    pacman->getJugador()->getMarcadorActual()->setMultiplicador(this->multiplicador);
    
    
    Uint32* argumentos = new Uint32[2];
    memcpy(&argumentos[0],&(this->duracionEfecto),sizeof(Uint32));
    memcpy(&argumentos[1],&pacman,sizeof(Uint32));
    SDL_Thread* thread = SDL_CreateThread(BonusCambioMultiplicador::volverAMultiplicadorOriginalThread, argumentos);
    
	// Se agrega el thread a la lista de thread para luego terminarlo si queda vivo.
	Juego::listaThreads->agregar(thread);
    
    this->matar();
}



void BonusCambioMultiplicador::colisionarConFantasma(ObjetoVivo* unObjetoVivo){

}

BonusCambioMultiplicador::~BonusCambioMultiplicador(void){

}

int BonusCambioMultiplicador::volverAMultiplicadorOriginalThread(void* parametros){
        Uint32* arregloParametros = (Uint32*)parametros;

        Uint32 delay = (Uint32)arregloParametros[0];
        Pacman* pacman = (Pacman*)arregloParametros[1];

        SDL_Delay(delay);
        
        pacman->getJugador()->getMarcadorActual()->cambiarAMultiplicadorOriginal();
		delete[] arregloParametros ;
        return 0;
}